// #include <stdint.h>
#include "apt32f102_gpio.h"
#include "apt32f102_adc.h"
#include "GN1621_Pin.h"

#ifndef CHIP_H
#define CHIP_H

typedef enum
{
    ADC_Oven = 0, 
    ADC_Meat1, 
    ADC_Meat2, 
	ADC_Meat3, 
	
    ADC_BAT_V, 
    ADC_INTVREF_1v,

    ADC_Load,

    ADC_Length 
}ADC_Seq_E;

//Key
#define Key_On_Off EXI7 //Key2 PA7
#define Key_F_C EXI6 //Key1 PA6

//Switch Key
#define Encode_A EXI0 //PB
#define Encode_B EXI14 //PA
#define Encode_KEY EXI15 //PA

#define CrossZero EXI11 //PA11
#define ReadIO_CrossZero() GPIO_Read_Status(GPIOA0,CrossZero)

//Temp
#define IO_Oven EXI10 //PA
#define IO_Probe1 EXI3 //PB
#define IO_Probe2 EXI8 //PA
#define IO_Probe3 EXI9 //PA

#define ADC_Channel_Oven ADC12_ADCIN11 //烤炉AD通道
#define ADC_Channel_Meat1 ADC12_ADCIN10 //肉探针1AD通道
#define ADC_Channel_Meat2 ADC12_ADCIN9 //肉探针2AD通道
#define ADC_Channel_Meat3 ADC12_ADCIN8 //肉探针3AD通道



//Motor control
#define IO_Heater EXI1 //PA //点火风扇
#define IO_Feed EXI3 //PA //进料风扇
#define IO_Fan EXI4 //PA //排气风扇
#define IO_Load_Detection EXI0 //PA0 //负载检测

#define ADC_Channel_Load ADC12_ADCIN1 //负载检测AD通道

 
//LCD: GN1621驱动芯片驱动LCD定制的段码屏
#define IO_Lcd_CS EXI5 //PB
#define IO_Lcd_WR EXI4
#define IO_Lcd_Data EXI1
#define IO_Lcd_ON_OFF EXI13 

//Buzzer:蜂鸣器
#define IO_Buzzer EXI2 //PB
#define GPIO_Buzzer_Open() GPIO_Write_High(GPIOB0,IO_Buzzer)
#define GPIO_Buzzer_Close() GPIO_Write_Low(GPIOB0,IO_Buzzer)


//TuYa UART0
#define IO_Uart_Tx EXI12 //PA12, UART0 Tx
#define IO_Uart_Rx EXI5 //PA5, UART0 Rx
#define GPIO_Mode_Uart_Tx() GPIO_Init(GPIOA0,IO_Uart_Tx,Output)
#define GPIO_Mode_Uart_Rx() GPIO_Init(GPIOA0,IO_Uart_Rx,Intput)
#define Uart_TuYa UART0


void SystemConfig(void);
uint32_t SamplingSingle(uint32_t channel);
void PinConfig_LCD(void);

#endif
